"""
正则表达式 是一种字符串的工具，用来做数据的校验，网页标签爬虫的规则 数据筛选 数据爬取等方面的操作

想使用正则表达式 要先导入re模块
"""
import re
"""
1.匹配多种可能 使用[]
  在一个字符串中 查询run 或者 ran  --》将可能的字符串放到[]   r[ua]n
"""             #规则，  原字符串  ==》 在原字符串根据规则查找出想要的内容
res = re.search(r'r[ua]n',"dogs runs to cat")
print("1:",res)#span=(5, 8)结果字符串在原字符串中的索引值, match='run' 最终匹配的结果

res = re.search(r'r[ua]n',"dogs rons to cat") #没有匹配到结果 返回None
print("2:",res)

"""
规则 A-Z
"""
res = re.search(r'r[A-Z]n',"dogs rKns to cat")
print("3:",res)
"""
规则 a-z
"""
res = re.search(r'r[a-z]n',"dogs rpns to cat")
print("4:",res)
"""
规则：r 中间字符0-9a-z n   r2n  r9n  rnn ron  r2kn:None
"""
res = re.search(r'r[0-9a-z]n',"dogs r2ns to cat")
print("5:",res)

"""
2.匹配数字   d 和 D
d： 表示一切数字
D：表示一切不是数字
"""
res = re.search(r'r\dn',"run r9n")
print("6:",res)
res = re.search(r'r\Dn',"run r9n")
print("7:",res)

"""
3.匹配空白  s  和  S
s：一切空白的东西  [  t(一个制表符 tab)   n(换行)   f(换页)   r(回车)]
S:一切非空白的东西
"""
res = re.search(r'r\sn',"r n r9n")
print("8:",res)
res = re.search(r'r\Sn',"r n r9n")
print("9:",res)


# 4.匹配所有字母、数字和_
# w: 表示一切字母 数字 _
# W：表示一切不是字母 数字 _
res = re.search(r'r\wn',"r n r9n")
print("10:",res)
res = re.search(r'r\Wn',"r\nn r9n")
print("11:",res)


res = re.search(r'runs\\',"dogs runs\ to cat")
print("12:",res)
#匹配任意字符，
res = re.search(r'r.ns',"dogs r;ns to cat")
print("13:",res)

"""
6.匹配0次 或者 多次
"""
res = re.search(r'ab*',"a")
print("14:",res)
res = re.search(r'ab*',"abbbbbbbccc")
print("15:",res)

"""
7.匹配一次 或 多次 +
"""
res = re.search(r'ab+','a')
print("16:",res)
res = re.search(r'ab+',"abbbbbc")
print("17:",res)

"""
8.替换内容  sub()
"""
res = re.sub('runs','走',"dog runs to cat")#将runs替换为走
print("18:",res)

"""
9.可选匹配次数
"""
res = re.search(r'ab{1,10}',"a")
print("19:",res)
res = re.search(r'ab{1,10}',"abbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccc")
print("20:",res)

"""
10.查找所有符合规则 findall
"""
res = re.findall(r'r[ua]n',"run ran res")
print("21:",res)

res = re.findall(r'(ran|run)',"run ran res")
print("22:",res)

"""

11.分割字符串 split
"""
res = re.split(r'[,;\.\\]','a,b;c.d\e')
print("23:",res)

#校验手机号 是否负责规则   13977907123     13 14 15 16 17 18 19
res = re.search(r'(13|14|15|16|17|18|19)[0-9]{9}',"14977907123")
print("23:",res)

#校验身份证号
res = re.search(r'\d{17}[\d|x]',"456080199901010027")
print("24:",res)